module MODULE_csa_n#(
  parameter N = 64
)(
  input  [N-1:0] a_i, 
  input  [N-1:0] b_i, 
  input  [N-1:0] c_i, 
  output [N-1:0] s_o, 
  output [N-1:0] c_o
);


  genvar i;
  generate
    for(i=0; i<N; i=i+1)begin:csa
      assign s_o[i] = a_i[i] ^ b_i[i] ^ c_i[i];
      assign c_o[i] = (a_i[i] & b_i[i])|(a_i[i] & c_i[i])|(b_i[i] & c_i[i]);
    end
  endgenerate

endmodule
